/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.





Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/

 

#ifndef AntiproModel_h
#define AntiproModel_h

@interface IpResource :NSObject

/// 公网 IP 所在区域, cn-north-1: 华北-北京, cn-east-1: 华东-宿迁, cn-east-2: 华东-上海, cn-south-1: 华南-广州
@property (strong,nonatomic,nonnull)  NSString*  region;

/// 公网 IP 类型或绑定资源类型:
   ///   0: 未知类型,
   ///   1: 弹性公网 IP(IP 为弹性公网 IP, 绑定资源类型未知),
   ///   10: 弹性公网 IP(IP 为弹性公网 IP, 但未绑定资源),
   ///   11: 云主机,
   ///   12: 负载均衡,
   ///   13: 原生容器实例,
   ///   14: 原生容器 Pod,
   ///   2: 云物理服务器,
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  resourceType;

/// 公网 IP 地址
@property (strong,nonatomic,nonnull)  NSString*  ip;

/// 带宽上限, 单位 Mbps
@property (strong,nonatomic,nonnull)  NSNumber*  bandwidth;

/// 请求流量清洗触发值, 单位 bps/s
@property (strong,nonatomic,nonnull)  NSNumber*  cleanThresholdBps;

/// 报文请求清洗触发值, 单位 pps/s
@property (strong,nonatomic,nonnull)  NSNumber*  cleanThresholdPps;

/// 黑洞阈值
@property (strong,nonatomic,nonnull)  NSNumber*  balckHoleThreshold;

/// 绑定防护包 ID, 为空字符时表示未绑定防护包
@property (strong,nonatomic,nonnull)  NSString*  instanceId;

/// 绑定防护包名称, 为空字符串时表示未绑定防护包
@property (strong,nonatomic,nonnull)  NSString*  instanceName;

/// 安全状态, 0: 安全, 1: 清洗, 2: 黑洞
@property (strong,nonatomic,nonnull)  NSNumber*  safeStatus;


-(id) initWithRegion:(NSString*) region
    resourceType:(NSNumber*)resourceType
    ip:(NSString*)ip
    bandwidth:(NSNumber*)bandwidth
    cleanThresholdBps:(NSNumber*)cleanThresholdBps
    cleanThresholdPps:(NSNumber*)cleanThresholdPps
    balckHoleThreshold:(NSNumber*)balckHoleThreshold
    instanceId:(NSString*)instanceId
    instanceName:(NSString*)instanceName
    safeStatus:(NSNumber*)safeStatus;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifyInstanceSpec :NSObject

/// 可防护 IP 数量, 1, 5, 10, 50, 100, 1000(不限), 可升级, 不可降级
@property (strong,nonatomic,nonnull)  NSNumber*  ipNum;

/// 保底带宽: 10, 20, 30, 50, 单位: Gbps, 可升级, 不可降级
@property (strong,nonatomic,nonnull)  NSNumber*  bpGbps;

/// 弹性带宽: 0, 10, 20, 单位: Gbps, 可升级, 可降级
@property (strong,nonatomic,nonnull)  NSNumber*  epGbps;


-(id) initWithIpNum:(NSNumber*) ipNum
    bpGbps:(NSNumber*)bpGbps
    epGbps:(NSNumber*)epGbps;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface OperationRecord :NSObject

/// 操作时间
@property (strong,nonatomic,nonnull)  NSString*  time;

/// 防护包名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 操作类型:  1：套餐变更, 2：防护规则变更, 3：防护对象变更, 4：IP 地址变更, 5：防护包名称变更
@property (strong,nonatomic,nonnull)  NSNumber*  action;

/// 操作详情
@property (strong,nonatomic,nonnull)  NSString*  info;

/// 操作人
@property (strong,nonatomic,nonnull)  NSString*  operatorValue;


-(id) initWithTime:(NSString*) time
    name:(NSString*)name
    action:(NSNumber*)action
    info:(NSString*)info
    operatorValue:(NSString*)operatorValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface AttackTypeCount :NSObject

/// 攻击类型
@property (strong,nonatomic,nonnull)  NSString*  type;

/// 攻击次数
@property (strong,nonatomic,nonnull)  NSNumber*  count;


-(id) initWithType:(NSString*) type
    count:(NSNumber*)count;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ProtectedIpSpec :NSObject

/// 被防护 IP 列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  ip;


-(id) initWithIp:(NSArray<NSString*>*) ip;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ProtectionOutline :NSObject

/// 已防护天数
@property (strong,nonatomic,nonnull)  NSNumber*  protectedDay;

/// 已防护 IP 数量
@property (strong,nonatomic,nonnull)  NSNumber*  protectedIpCount;

/// 7 日攻击次数
@property (strong,nonatomic,nonnull)  NSNumber*  weekAttackCount;

/// 7 日攻击流量峰值
@property (strong,nonatomic,nonnull)  NSNumber*  weekAttackPeak;

/// 7 日攻击流量单位
@property (strong,nonatomic,nonnull)  NSString*  weekAttackUnit;

/// 30 日攻击次数
@property (strong,nonatomic,nonnull)  NSNumber*  monthAttackCount;

/// 30 日攻击流量峰值
@property (strong,nonatomic,nonnull)  NSNumber*  monthAttackPeak;

/// 30 日攻击流量单位
@property (strong,nonatomic,nonnull)  NSString*  monthAttackUnit;

/// 当前攻击数量
@property (strong,nonatomic,nonnull)  NSNumber*  currentAttackCount;


-(id) initWithProtectedDay:(NSNumber*) protectedDay
    protectedIpCount:(NSNumber*)protectedIpCount
    weekAttackCount:(NSNumber*)weekAttackCount
    weekAttackPeak:(NSNumber*)weekAttackPeak
    weekAttackUnit:(NSString*)weekAttackUnit
    monthAttackCount:(NSNumber*)monthAttackCount
    monthAttackPeak:(NSNumber*)monthAttackPeak
    monthAttackUnit:(NSString*)monthAttackUnit
    currentAttackCount:(NSNumber*)currentAttackCount;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ProtectionRuleSpec :NSObject

/// 被防护 IP, 缺省时修改防护包实例防护规则
@property (strong,nonatomic,nonnull)  NSString*  ip;

/// 防护规则类型, 修改 ip 防护规则时必传, 0: 设置 ip 使用防护包规则, 1: 设置 IP 使用自定义规则
@property (strong,nonatomic,nonnull)  NSNumber*  type;

/// 清洗触发值 bps, 修改实例防护规则或自定义 IP 防护规则时必传
@property (strong,nonatomic,nonnull)  NSNumber*  cleanThresholdBps;

/// 清洗触发值 pps, 修改实例防护规则或自定义 IP 防护规则时必传
@property (strong,nonatomic,nonnull)  NSNumber*  cleanThresholdPps;

/// 虚假源, 0: 关闭, 1: 开启, 修改实例防护规则或自定义 IP 防护规则时必传
@property (strong,nonatomic,nonnull)  NSNumber*  spoofIpEnable;

/// 源新建连接限速, 0: 关闭, 1: 开启, 修改实例防护规则或自定义 IP 防护规则时必传
@property (strong,nonatomic,nonnull)  NSNumber*  srcNewConnLimitEnable;

/// 源新建连接速率, 修改实例防护规则或自定义 IP 防护规则时必传
@property (strong,nonatomic,nonnull)  NSNumber*  srcNewConnLimitValue;

/// 目的新建连接, 0: 关闭, 1: 开启, 修改实例防护规则或自定义 IP 防护规则时必传
@property (strong,nonatomic,nonnull)  NSNumber*  dstNewConnLimitEnable;

/// 目的新建连接速率, 修改实例防护规则或自定义 IP 防护规则时必传
@property (strong,nonatomic,nonnull)  NSNumber*  dstNewConnLimitValue;

/// 报文最小长度, 取值范围 [1, datagramRangeMax)
@property (strong,nonatomic,nonnull)  NSNumber*  datagramRangeMin;

/// 报文最大长度, 取值范围 (datagramRangeMin, 1518]
@property (strong,nonatomic,nonnull)  NSNumber*  datagramRangeMax;

/// geo 拦截地域编码列表. 查询 &lt;a href&#x3D;&quot;http://docs.jdcloud.com/anti-ddos-protection-package/api/describegeoareas&quot;&gt;describeGeoAreas&lt;/a&gt; 接口获取可设置的地域编码列表
   /// 
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  geoBlackList;

/// IP 黑名单列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  ipBlackList;

/// IP 白名单列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  ipWhiteList;


-(id) initWithIp:(NSString*) ip
    type:(NSNumber*)type
    cleanThresholdBps:(NSNumber*)cleanThresholdBps
    cleanThresholdPps:(NSNumber*)cleanThresholdPps
    spoofIpEnable:(NSNumber*)spoofIpEnable
    srcNewConnLimitEnable:(NSNumber*)srcNewConnLimitEnable
    srcNewConnLimitValue:(NSNumber*)srcNewConnLimitValue
    dstNewConnLimitEnable:(NSNumber*)dstNewConnLimitEnable
    dstNewConnLimitValue:(NSNumber*)dstNewConnLimitValue
    datagramRangeMin:(NSNumber*)datagramRangeMin
    datagramRangeMax:(NSNumber*)datagramRangeMax
    geoBlackList:(NSArray<NSString*>*)geoBlackList
    ipBlackList:(NSArray<NSString*>*)ipBlackList
    ipWhiteList:(NSArray<NSString*>*)ipWhiteList;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface AttackLog :NSObject

/// 公网 IP
@property (strong,nonatomic,nonnull)  NSString*  ip;

/// 公网 IP 类型或绑定资源类型:
   ///   0: 未知类型,
   ///   1: 弹性公网 IP(IP 为弹性公网 IP, 绑定资源类型未知),
   ///   10: 弹性公网 IP(IP 为弹性公网 IP, 但未绑定资源),
   ///   11: 云主机,
   ///   12: 负载均衡,
   ///   13: 原生容器实例,
   ///   14: 原生容器 Pod,
   ///   2: 云物理服务器,
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  resourceType;

/// 攻击记录 Id
@property (strong,nonatomic,nonnull)  NSString*  attackLogId;

/// 攻击开始时间
@property (strong,nonatomic,nonnull)  NSString*  startTime;

/// 攻击结束时间
@property (strong,nonatomic,nonnull)  NSString*  endTime;

/// 触发原因:
   /// 0: 未知,
   /// 1: 四层,
   /// 2: 七层,
   /// 3: 四层和七层
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  cause;

/// 状态, 0: 清洗完成, 1: 清洗中, 2: 黑洞中
@property (strong,nonatomic,nonnull)  NSNumber*  status;

/// 是否黑洞
@property (strong,nonatomic,nonnull)  NSNumber*  blackHole;

/// 攻击流量峰值
@property (strong,nonatomic,nonnull)  NSNumber*  peak;

/// 攻击流量峰值单位
@property (strong,nonatomic,nonnull)  NSString*  unit;

/// 攻击类型
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  attackType;


-(id) initWithIp:(NSString*) ip
    resourceType:(NSNumber*)resourceType
    attackLogId:(NSString*)attackLogId
    startTime:(NSString*)startTime
    endTime:(NSString*)endTime
    cause:(NSNumber*)cause
    status:(NSNumber*)status
    blackHole:(NSNumber*)blackHole
    peak:(NSNumber*)peak
    unit:(NSString*)unit
    attackType:(NSArray<NSString*>*)attackType;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface PriceSpec :NSObject

/// 操作类型 1: 新购防护包, 3: 升级防护包
@property (strong,nonatomic,nonnull)  NSNumber*  buyType;

/// 防护包实例 Id, 升级防护包查询价格时必传
@property (strong,nonatomic,nonnull)  NSNumber*  idValue;

/// 计费类型 1: 按配置 2: 按用量 3: 包年包月
@property (strong,nonatomic,nonnull)  NSNumber*  billingType;

/// 套餐类型, 1: 独享 IP, 2: 共享 IP
@property (strong,nonatomic,nonnull)  NSNumber*  pkgType;

/// 可防护 IP 数量, 5, 10, 50, 100, 1000(不限)
@property (strong,nonatomic,nonnull)  NSNumber*  ipNum;

/// 保底带宽: 0, 10, 20, 30, 50, 单位: Gbps
@property (strong,nonatomic,nonnull)  NSNumber*  bp;

/// 弹性带宽: 0, 10, 20, 单位: Gbps
@property (strong,nonatomic,nonnull)  NSNumber*  ep;

/// 购买防护包时长, 新购防护包时必传
   /// - timeUnit 为 3 时, 可取值 1-9
   /// - timeUnit 为 4 时, 可取值 1-3
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  timeSpan;

/// 购买时长类型, 新购防护包时必传
   /// - 3: 月
   /// - 4: 年
@property (strong,nonatomic,nonnull)  NSNumber*  timeUnit;


-(id) initWithBuyType:(NSNumber*) buyType
    idValue:(NSNumber*)idValue
    billingType:(NSNumber*)billingType
    pkgType:(NSNumber*)pkgType
    ipNum:(NSNumber*)ipNum
    bp:(NSNumber*)bp
    ep:(NSNumber*)ep
    timeSpan:(NSNumber*)timeSpan
    timeUnit:(NSNumber*)timeUnit;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ProtectedIp :NSObject

/// 被防护 IP
@property (strong,nonatomic,nonnull)  NSString*  ip;

/// 安全状态, 0: 安全, 1: 清洗, 2: 黑洞
@property (strong,nonatomic,nonnull)  NSNumber*  safeStatus;

/// 公网 IP 类型或绑定资源类型:
   ///   0: 未知类型,
   ///   1: 弹性公网 IP(IP 为弹性公网 IP, 绑定资源类型未知),
   ///   10: 弹性公网 IP(IP 为弹性公网 IP, 但未绑定资源),
   ///   11: 云主机,
   ///   12: 负载均衡,
   ///   13: 原生容器实例,
   ///   14: 原生容器 Pod,
   ///   2: 云物理服务器,
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  resourceType;

/// 防护规则类型, 0: 默认(防护包的防护规则), 1: IP 自定义规则
@property (strong,nonatomic,nonnull)  NSNumber*  protectionRuleType;


-(id) initWithIp:(NSString*) ip
    safeStatus:(NSNumber*)safeStatus
    resourceType:(NSNumber*)resourceType
    protectionRuleType:(NSNumber*)protectionRuleType;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface GeoBlack :NSObject

/// geo 拦截地域
@property (strong,nonatomic,nonnull)  NSString*  label;

/// geo 拦截地域编码
@property (strong,nonatomic,nonnull)  NSString*  value;


-(id) initWithLabel:(NSString*) label
    value:(NSString*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ProtectedObjectsSpec :NSObject

/// 是否防护弹性公网 IP
@property (strong,nonatomic,nonnull)  NSNumber*  eip;

/// 是否防护云物理服务器
@property (strong,nonatomic,nonnull)  NSNumber*  cps;


-(id) initWithEip:(NSNumber*) eip
    cps:(NSNumber*)cps;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface OrderSpec :NSObject

/// 操作类型 1: 新购防护包, 3: 升级防护包
@property (strong,nonatomic,nonnull)  NSNumber*  buyType;

/// 防护包实例 Id, 升级防护包实例时必传
@property (strong,nonatomic,nonnull)  NSString*  idValue;

/// 防护包实例名称, 新购防护包时必传
   /// 长度限制为 1-80 个字符, 只允许包含中文, 字母, 数字, -, ., /, _
   /// 
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 套餐类型, 1: 独享 IP, 2: 共享 IP
@property (strong,nonatomic,nonnull)  NSNumber*  pkgType;

/// 可防护 IP 数量, 5, 10, 50, 100 1000(不限)
@property (strong,nonatomic,nonnull)  NSNumber*  ipNum;

/// 保底带宽: 10, 20, 30, 50, 单位: Gbps
@property (strong,nonatomic,nonnull)  NSNumber*  bp;

/// 弹性带宽: 0, 10, 20, 单位: Gbps
@property (strong,nonatomic,nonnull)  NSNumber*  ep;

/// 购买防护包时长, 新购防护包时必传
   /// - timeUnit 为 3 时, 可取值 1-9
   /// - timeUnit 为 4 时, 可取值 1-3
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  timeSpan;

/// 购买时长类型, 新购防护包时必传
   /// - 3: 月
   /// - 4: 年
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  timeUnit;

/// 回调 url
@property (strong,nonatomic,nonnull)  NSString*  returnUrl;


-(id) initWithBuyType:(NSNumber*) buyType
    idValue:(NSString*)idValue
    name:(NSString*)name
    pkgType:(NSNumber*)pkgType
    ipNum:(NSNumber*)ipNum
    bp:(NSNumber*)bp
    ep:(NSNumber*)ep
    timeSpan:(NSNumber*)timeSpan
    timeUnit:(NSNumber*)timeUnit
    returnUrl:(NSString*)returnUrl;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ModifyInstanceNameSpec :NSObject

/// 新的实例名称, 长度限制为 1-80 个字符, 只允许包含中文, 字母, 数字, -, ., /, _
@property (strong,nonatomic,nonnull)  NSString*  name;


-(id) initWithName:(NSString*) name;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ExtraOperationSpec :NSObject

/// 操作类型 1: 购买成功后自动导入 ip, 需要传 ip
@property (strong,nonatomic,nonnull)  NSNumber*  operationType;

/// 支持弹性公网 ip 和云物理机公网 ip
@property (strong,nonatomic,nonnull)  NSString*  ip;


-(id) initWithOperationType:(NSNumber*) operationType
    ip:(NSString*)ip;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface CreateInstanceSpec :NSObject

/// 防护包实例名称, 新购防护包时必传
   /// 长度限制为 1-80 个字符, 只允许包含中文, 字母, 数字, -, ., /, _
   /// 
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 可防护 IP 数量, 1, 5, 10, 50, 100, 1000(不限)
@property (strong,nonatomic,nonnull)  NSNumber*  ipNum;

/// 保底带宽: 10, 20, 30, 50, 单位: Gbps
@property (strong,nonatomic,nonnull)  NSNumber*  bpGbps;

/// 弹性带宽: 0, 10, 20, 单位: Gbps
@property (strong,nonatomic,nonnull)  NSNumber*  epGbps;

/// 购买防护包时长, 新购防护包时必传
   /// - timeUnit 为 3 时, 可取值 1-9
   /// - timeUnit 为 4 时, 可取值 1-3
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  timeSpan;

/// 购买时长类型, 新购防护包时必传
   /// - 3: 月
   /// - 4: 年
@property (strong,nonatomic,nonnull)  NSNumber*  timeUnit;


-(id) initWithName:(NSString*) name
    ipNum:(NSNumber*)ipNum
    bpGbps:(NSNumber*)bpGbps
    epGbps:(NSNumber*)epGbps
    timeSpan:(NSNumber*)timeSpan
    timeUnit:(NSNumber*)timeUnit;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface IpResourceInfo :NSObject

/// 公网 IP 地址
@property (strong,nonatomic,nonnull)  NSString*  ip;

/// 安全状态, 0-&gt;安全, 1-&gt;清洗, 2-&gt;黑洞
@property (strong,nonatomic,nonnull)  NSNumber*  safeStatus;

/// 地域
@property (strong,nonatomic,nonnull)  NSString*  region;

/// 黑洞阈值, 单位 bps
@property (strong,nonatomic,nonnull)  NSNumber*  blackHoleThreshold;

/// 触发清洗的流量速率, 单位 bps
@property (strong,nonatomic,nonnull)  NSNumber*  cleanThresholdBps;

/// 触发清洗的包速率, 单位 pps
@property (strong,nonatomic,nonnull)  NSNumber*  cleanThresholdPps;


-(id) initWithIp:(NSString*) ip
    safeStatus:(NSNumber*)safeStatus
    region:(NSString*)region
    blackHoleThreshold:(NSNumber*)blackHoleThreshold
    cleanThresholdBps:(NSNumber*)cleanThresholdBps
    cleanThresholdPps:(NSNumber*)cleanThresholdPps;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface IpResourceFlow :NSObject

/// 时间, 格式: yyyy-MM-dd&#39;T&#39;HH:mm:ssZ
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  time;

/// 防护后流量
@property (strong,nonatomic,nonnull)  NSArray<NSNumber*>*  postProtect;

/// 防护前流量
@property (strong,nonatomic,nonnull)  NSArray<NSNumber*>*  preProtect;

/// 流量单位
@property (strong,nonatomic,nonnull)  NSString*  unit;


-(id) initWithTime:(NSArray<NSString*>*) time
    postProtect:(NSArray<NSNumber*>*)postProtect
    preProtect:(NSArray<NSNumber*>*)preProtect
    unit:(NSString*)unit;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ProtectedObject :NSObject

/// 防护对象类型: eip: 弹性公网 IP, cps: 云物理服务器
@property (strong,nonatomic,nonnull)  NSString*  type;

/// 已防护 IP 个数
@property (strong,nonatomic,nonnull)  NSNumber*  count;

/// 防护 IP 列表
@property (strong,nonatomic,nonnull)  NSArray<ProtectedIp*>*  ipList;


-(id) initWithType:(NSString*) type
    count:(NSNumber*)count
    ipList:(NSArray<ProtectedIp*>*)ipList;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Instance :NSObject

/// 防护包实例 Id
@property (strong,nonatomic,nonnull)  NSString*  idValue;

/// 防护包实例名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 防护包实例地域
@property (strong,nonatomic,nonnull)  NSString*  region;

/// 套餐类型, 1: 独享 IP, 2: 共享 IP
@property (strong,nonatomic,nonnull)  NSNumber*  type;

/// 可防护 IP 个数
@property (strong,nonatomic,nonnull)  NSNumber*  ipCount;

/// 保底带宽, 单位 Gbps
@property (strong,nonatomic,nonnull)  NSNumber*  basicBandwidth;

/// 弹性带宽, 单位 Gbps
@property (strong,nonatomic,nonnull)  NSNumber*  elasticBandwidth;

/// 实例过期时间
@property (strong,nonatomic,nonnull)  NSString*  expireTime;

/// 实例创建时间
@property (strong,nonatomic,nonnull)  NSString*  createTime;

/// 防护对象
@property (strong,nonatomic,nonnull)  NSArray<ProtectedObject*>*  protectedObjects;

/// 是否为试用防护包
@property (strong,nonatomic,nonnull)  NSNumber*  onTrial;

/// 资源 Id
@property (strong,nonatomic,nonnull)  NSString*  resourceId;


-(id) initWithId:(NSString*) idValue
    name:(NSString*)name
    region:(NSString*)region
    type:(NSNumber*)type
    ipCount:(NSNumber*)ipCount
    basicBandwidth:(NSNumber*)basicBandwidth
    elasticBandwidth:(NSNumber*)elasticBandwidth
    expireTime:(NSString*)expireTime
    createTime:(NSString*)createTime
    protectedObjects:(NSArray<ProtectedObject*>*)protectedObjects
    onTrial:(NSNumber*)onTrial
    resourceId:(NSString*)resourceId;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ProtectionRule :NSObject

/// 防护规则类型: 0: 默认防护包规则, 1: IP 自定义规则
@property (strong,nonatomic,nonnull)  NSNumber*  type;

/// 清洗触发值 bps
@property (strong,nonatomic,nonnull)  NSNumber*  cleanThresholdBps;

/// 清洗触发值 pps
@property (strong,nonatomic,nonnull)  NSNumber*  cleanThresholdPps;

/// 虚假源开启
@property (strong,nonatomic,nonnull)  NSNumber*  spoofIpEnable;

/// 源新建连接限速开启
@property (strong,nonatomic,nonnull)  NSNumber*  srcNewConnLimitEnable;

/// 源新建连接速率
@property (strong,nonatomic,nonnull)  NSNumber*  srcNewConnLimitValue;

/// 目的新建连接开启
@property (strong,nonatomic,nonnull)  NSNumber*  dstNewConnLimitEnable;

/// 目的新建连接速率
@property (strong,nonatomic,nonnull)  NSNumber*  dstNewConnLimitValue;

/// 报文最小长度
@property (strong,nonatomic,nonnull)  NSNumber*  datagramRangeMin;

/// 报文最大长度
@property (strong,nonatomic,nonnull)  NSNumber*  datagramRangeMax;

/// geo 拦截地域列表
@property (strong,nonatomic,nonnull)  NSArray<GeoBlack*>*  geoBlackList;

/// IP 黑名单列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  ipBlackList;

/// IP 白名单列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  ipWhiteList;


-(id) initWithType:(NSNumber*) type
    cleanThresholdBps:(NSNumber*)cleanThresholdBps
    cleanThresholdPps:(NSNumber*)cleanThresholdPps
    spoofIpEnable:(NSNumber*)spoofIpEnable
    srcNewConnLimitEnable:(NSNumber*)srcNewConnLimitEnable
    srcNewConnLimitValue:(NSNumber*)srcNewConnLimitValue
    dstNewConnLimitEnable:(NSNumber*)dstNewConnLimitEnable
    dstNewConnLimitValue:(NSNumber*)dstNewConnLimitValue
    datagramRangeMin:(NSNumber*)datagramRangeMin
    datagramRangeMax:(NSNumber*)datagramRangeMax
    geoBlackList:(NSArray<GeoBlack*>*)geoBlackList
    ipBlackList:(NSArray<NSString*>*)ipBlackList
    ipWhiteList:(NSArray<NSString*>*)ipWhiteList;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Country :NSObject

/// 国家或地区名称
@property (strong,nonatomic,nonnull)  NSString*  label;

/// 国家或地区编码
@property (strong,nonatomic,nonnull)  NSString*  value;

/// Children
@property (strong,nonatomic,nonnull)  NSArray<Country*>*  children;


-(id) initWithLabel:(NSString*) label
    value:(NSString*)value
    children:(NSArray<Country*>*)children;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end

#endif /* AntiproModel_h */
